-> CargoResult<Vec<(PackageIdSpec, Dependency)>> {
let mut replace = Vec::new();
for (spec, replacement) in self.replace.iter().flat_map(|x| x) {
- let spec = match PackageIdSpec::parse(spec) {
- Ok(spec) => spec,
- Err(_) => bail!("replacements must specify a \
- valid semver version \
- to replace, but `{}` does not", spec),
- };
+ let spec = try!(PackageIdSpec::parse(spec).chain_error(|| {
+ human(format!("replacements must specify a valid semver \
+ version to replace, but `{}` does not",
+ spec))
+ }));
let version_specified = match *replacement {
TomlDependency::Detailed(ref d) => d.version.is_some(),
.file("src/lib.rs", "");
assert_that(p.cargo_process("build"),
- execs().with_status(101).with_stderr("\
+ execs().with_status(101).with_stderr_contains("\
error: failed to parse manifest at `[..]`
Caused by: